package shujia.day19;

/*
    当我们要执行的表达式是调用某个对象的方法，并且这个方法的参数列表和接口里抽象函数的参数列表一一对应时，
    我们就可以采用引用对象的方法的格式。
    假如 Lambda 表达式符合如下格式：
    ([变量1, 变量2, ...]) -> 对象引用.方法名([变量1, 变量2, ...])

 */
class Test7{
    public void fun1(int id,String name,int age,String address){
        System.out.println("学号："+id);
        System.out.println("姓名："+name);
        System.out.println("年龄："+age);
        System.out.println("地址："+address);
    }
}

interface Inter7{
    void fun2(int a,String b,int c,String d);
}

class Demo7{
    public static void show(int a,String b,int c,String d, Inter7 inter7){
        inter7.fun2(a,b,c,d);
    }
}

public class LambdaDemo7 {
    public static void main(String[] args) {
        Test7 test7 = new Test7();

//        Demo7.show(1001,"张三",18,"安徽合肥", (a,b,c,d)->test7.fun1(a,b,c,d));

        //默认将接口【fun2】方法中传入【4个】参数值，直接赋值给对象【test7】中的【fun1】方法
        Demo7.show(1001,"张三",18,"安徽合肥", test7::fun1);

    }
}
